package com.ly.consumer.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class JsTreeTest {



    /**
     * @describe：
     * @author：李勇
     * @date：2022/7/19
     * @param
     * @return：java.util.List<com.consumer.util.JsTree>
     */
    public List<JsTree> getTreeData() {
        //获取数据的sql
        //数据格式在resource中文档照片显示,如忘记请查看，其中下面的map可以换成自己的实体,如果想要增加下一级则在加循环
        List<Map> treeList=new ArrayList<>();
        List<JsTree> jsTrees1 = new ArrayList<JsTree>();
        List<JsTree> jsTrees2 = new ArrayList<JsTree>();
        List<JsTree> jsTrees3 = new ArrayList<JsTree>();
        //分级别存储不同状态的
        for (Map tree : treeList) {
            //最外层权限
            if("ent".equals(tree.get("type"))){
                jsTrees1.add(JsTreeUtil.entAndDeptAndSingWellDataToJsTree(tree));
            }else if("dept".equals(tree.get("type"))){
                jsTrees2.add(JsTreeUtil.entAndDeptAndSingWellDataToJsTree(tree));
            }else if("single_well".equals(tree.get("type"))){
                jsTrees3.add(JsTreeUtil.entAndDeptAndSingWellDataToJsTree(tree));
            }
        }
        //一级
        for (JsTree jsTree1 : jsTrees1) {
            String id1 = jsTree1.getId();
            //设置一级菜单自动开启
            jsTree1.getState().setOpened(true);
            List<JsTree> childrens1 = new ArrayList<>();
            //二级
            for (JsTree jsTree2 : jsTrees2) {
                String id2 = jsTree2.getId();
                Map tree2Data = (Map) jsTree2.getData();
                //获取父级id
                String tree2ParentId = String.valueOf(tree2Data.get("parentId"));
                List<JsTree> childrens2 = new ArrayList<>();
                //满足当前所属子权限
                if(id1.equals(tree2ParentId)){
                    childrens1.add(jsTree2);
                }
                //三级
                for (JsTree jsTree3 : jsTrees3) {
                    String id3 = jsTree3.getId();
                    Map tree3Data = (Map) jsTree3.getData();
                    //获取父级id
                    String tree3ParentId = String.valueOf(tree3Data.get("parentId"));
                    List<JsTree> childrens3 = new ArrayList<>();
                    //满足当前所属子权限
                    if(id2.equals(tree3ParentId)){
                        childrens2.add(jsTree3);
                    }
                    //如果想要增加下一级则在加一层循环


                    //3级添加到2级菜单下
                    jsTree3.setChildren(childrens3);
                }
                //3级添加到2级菜单下
                jsTree2.setChildren(childrens2);
            }
            //二级添加到一级菜单下
            jsTree1.setChildren(childrens1);
        }
        return jsTrees1;
    }
}
